当有人点击列表中的对象时,我正在尝试渲染编辑表单。
我在控制器中做了一个测试操作,如下所示:
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>