Rails,触发链接上的自定义操作

时间:2016-05-15 16:10:06

标签: javascript ruby-on-rails render

当有人点击列表中的对象时,我正在尝试渲染编辑表单。

我在控制器中做了一个测试操作,如下所示:

def test    
    respond_to do |format|
        format.js
    end
end

在我的视图中,我创建了一个这样的链接:

<%= link_to image_tag('icons/edit3.png'),
        :remote => true,
        :controller => :aliens, 
        :id => alien.expansion.id,
        :ph_id => alien.id,
        :action => :test 
%>

和我的test.js.erb

console.log('testing');

我还制作了自定义路线

  get 'expansions/:id/aliens/:ph_id/test' => 'aliens#test', as: :test

这很有效。每次我点击一个对象,它都会在控制台中打印出来。

问题是我希望.js.erb呈现表单。但是,如果我将此代码添加到js:

$('.dialog__content').append('<%= j render :partial => 'editform', :formats => :html %>');

$('.dialog__content').html("<%= j render(@editform) %>'");

$('.dialog__content').html("<%= escape_javascript (render partial: 'editform') %>");

返回GET“我的路径”404(未找到)

如果我将变量添加到我的动作中:

def test
    @aliens = Alien.all
    @expansions = Expansion.all
    @expansion = Expansion.find(params[:expansion_id])
    @alien = @aliens.find(params[:id])

    respond_to do |format|
        format.js
    end

end

它还返回:获取“我的路径”404(未找到)

我该怎么办? 感谢。

更新 我的编辑部分, 似乎变量就是问题所在。我尝试使用html渲染部分内容,并且效果很好。

<div class="hidden_form form_holder">
    <%=form_for [@expansion, @alien], :remote => true, :html => {:class => "add edit",  :multipart => true }  do |f| %>
        <h2>Rediger Alien </h2>
        <%= f.label :title %>
        <%= f.text_field :title %>

        <%= f.label :difficulty %>
        <%= f.select :difficulty, ['Beginner', 'Intermediate', 'Hard']%>

        <%= f.label :tokens %>
        <%= f.number_field :tokens %>

        <div class="clearfix">
        <div class="byside">
                <%= f.check_box :gamesetup %>
                <%= f.label :gamesetup, :class => 'check'%>
            </div>
            <div class="byside">
                <%= f.file_field :avatar %>
        </div>

        </div>


        <%= f.submit %>

     <% end %>
</div>

0 个答案:

没有答案
相关问题